Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
A JavaScript library of spatial predicates and functions for processing geometry
The jsts (JavaScript Topology Suite) npm package is a JavaScript library for performing various geometric operations. It is a port of the well-known JTS Topology Suite, which is widely used in the GIS (Geographic Information Systems) community. The library provides a range of functionalities for creating, manipulating, and analyzing planar geometric objects.
Geometry Creation
This feature allows you to create geometric objects from Well-Known Text (WKT) representations. In this example, a point geometry is created from a WKT string.
const jsts = require('jsts');
const reader = new jsts.io.WKTReader();
const point = reader.read('POINT (10 20)');
console.log(point);
Geometric Operations
This feature allows you to perform geometric operations such as union, intersection, and difference. In this example, the union operation is performed on two polygon geometries.
const jsts = require('jsts');
const reader = new jsts.io.WKTReader();
const geom1 = reader.read('POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))');
const geom2 = reader.read('POLYGON ((20 30, 35 35, 30 20, 20 30))');
const union = geom1.union(geom2);
console.log(union);
Spatial Analysis
This feature allows you to perform spatial analysis operations such as calculating distances between geometries. In this example, the distance between two point geometries is calculated.
const jsts = require('jsts');
const reader = new jsts.io.WKTReader();
const geom1 = reader.read('POINT (10 20)');
const geom2 = reader.read('POINT (30 40)');
const distance = geom1.distance(geom2);
console.log(distance);
Turf is a JavaScript library for advanced geospatial analysis. It provides a wide range of spatial operations and is highly optimized for performance. Compared to jsts, Turf offers more functionalities for working with GeoJSON data and is often used in web mapping applications.
Geolib is a lightweight library for geospatial operations in JavaScript. It focuses on basic geospatial calculations such as distance, area, and bounding boxes. While it is not as feature-rich as jsts, it is simpler to use for basic geospatial tasks.
OpenLayers is a powerful library for displaying and interacting with maps in web applications. It includes some geospatial analysis functionalities but is primarily focused on map rendering and user interaction. Compared to jsts, OpenLayers is more suitable for building interactive map applications.
JSTS is an ECMAScript library of spatial predicates and functions for processing geometry conforming to the Simple Features Specification for SQL published by the Open Geospatial Consortium. JSTS is also a port of the well established Java library JTS.
The primary goal of the project is to provide web mapping applications with a complete library for processing and analyzing simple geometries but JSTS can also be used as a free standing geometry library.
JSTS was made using automatic translation of the original JTS Java source via AST to AST transformation preserving the JTS API, except for the I/O related classes which has been selectively and manually ported with support for WKT, GeoJSON and OpenLayers 3+.
A Google group is available for discussions.
A port of JTS Validation Suite provides additional tests.
Basic functionality together with OpenLayers is demonstrated here.
An ES5 (the most common JavaScript variant) compatible build for browsers is available here.
An ES6+ compatible build for browsers is available here.
Including the above build as a script will import a global object jsts
exposing similar public API as org.locationtech.jts
in the JTS API.
For Node.js 14+, install using npm install jsts
after which you can import individual modules with fx. import GeoJSONReader from 'jsts/org/locationtech/jts/io/GeoJSONReader.js'
. Note that since some time JSTS is only delivered as ES modules and you should be aware of https://nodejs.org/api/esm.html and specifically https://nodejs.org/api/esm.html#interoperability-with-commonjs.
I/O related classes in JTS had to be manually ported. From the original formats WKT and GeoJSON are supported. A direct reader/writer for OpenLayers 3+ geometries exist. See the API documentation for these specific classes.
As of version 1.4.0 it's possible to depend on the source modules directly using the NPM package. For most environments it will require a bundler like Rollup to work. topolis serves as an example project depending on JSTS in this way. The example page also exists in a version that loads JSTS as modules in supporting browsers .
createMultiPoint
in GeometryFactory
which only works with Point[]
arguments.TopologyException
thrown as an Error
. This is expected if a calculation fails due to precision issues. To resolve this issue try reducing precision in the input and at the same time make sure the input is valid as defined by the OGC Simple Features specification. To reduce precision GeometryPrecisionReducer can be used..buffer
, .intersects
and more) unless using the bundled ES5 version that has these monkey patched in. The shortcut methods have been removed because they cause difficult circular dependencies. You can find the equivalent methods on the appropriate operation
class.FAQs
A JavaScript library of spatial predicates and functions for processing geometry
The npm package jsts receives a total of 129,574 weekly downloads. As such, jsts popularity was classified as popular.
We found that jsts demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.